package com.wryyyyy.controller;

import com.wryyyyy.dto.Result;
import com.wryyyyy.service.ICountryService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Arrays;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author wryyyyy
 * @since 2024-05-25
 */
@RestController
@RequestMapping("/country")
public class CountryController {
    @Resource
    private ICountryService countryService;

    // 管理

    /**
     * 整个泰安市 污水、净水、循环水 达标率
     * @param countryIds 泰安市下的 所有区
     * @return 达标率
     */
    @PostMapping("/passing")
    public Result passing(@RequestBody String[] countryIds) {
        return countryService.getPassingRate(Arrays.asList(countryIds));
    }

    /**
     * 污水 水质分析
     * @param countryIds 泰安市下的 所有区
     * @return 水质
     */
    @PostMapping("/foulContent")
    public Result foulContent(@RequestBody String[] countryIds) {
        return countryService.getFoulContent(Arrays.asList(countryIds));
    }

    /**
     * 净水 水质分析
     * @param countryIds 泰安市下的 所有区
     * @return 水质
     */
    @PostMapping("/pureContent")
    public Result pureContent(@RequestBody String[] countryIds) {
        return countryService.getPureContent(Arrays.asList(countryIds));
    }

    /**
     * 循环水 水质分析
     * @param countryIds 泰安市下的 所有区
     * @return 水质
     */
    @PostMapping("/circulatingContent")
    public Result circulatingContent(@RequestBody String[] countryIds) {
        return countryService.getCirculatingContent(Arrays.asList(countryIds));
    }

    /**
     * 污水 24h内 每2h水量
     * @param countryIds 泰安市下的 所有区
     * @return 水量
     */
    @PostMapping("/foulAmount")
    public Result foulAmount(@RequestBody String[] countryIds) {
        return countryService.getFoulAmount(Arrays.asList(countryIds));
    }

    /**
     * 污水 24h内 每2h加药量
     * @param countryIds 泰安市下的 所有区
     * @return 加药量
     */
    @PostMapping("/foulDosage")
    public Result foulDosage(@RequestBody String[] countryIds) {
        return countryService.getFoulDosage(Arrays.asList(countryIds));
    }

    /**
     * 净水 24h内 每2h水量
     * @param countryIds 泰安市下的 所有区
     * @return 水量
     */
    @PostMapping("/pureAmount")
    public Result pureAmount(@RequestBody String[] countryIds) {
        return countryService.getPureAmount(Arrays.asList(countryIds));
    }

    /**
     * 循环水 24h内 每2h水量
     * @param countryIds 泰安市下的 所有区
     * @return 水量
     */
    @PostMapping("/circulatingAmount")
    public Result circulatingAmount(@RequestBody String[] countryIds) {
        return countryService.getCirculatingAmount(Arrays.asList(countryIds));
    }

    /**
     * 泰安市 各区 考核排名
     * @param countryIds 泰安市下的 所有区
     * @return 区list
     */
    @PostMapping("/ranking")
    public Result ranking(@RequestBody String[] countryIds) {
        return countryService.getRanking(Arrays.asList(countryIds));
    }

    /**
     * 泰安市 基本信息（人口数、水源井数、污水厂数、测压点数） | 所有水源井 | 所有污水厂 | 所有测压点
     * @param countryIds 泰安市下的 所有区
     * @return 区list
     */
    @PostMapping("/basicInfo")
    public Result basicInfo(@RequestBody String[] countryIds) {
        return countryService.getBasicInfo(Arrays.asList(countryIds));
    }

    // 运维

    /**
     * 泰安市各区 污水 达标率 排名
     * @param countryIds 泰安市下的 所有区
     * @return 各区达标率
     */
    @PostMapping("/eachPassing")
    public Result eachPassing(@RequestBody String[] countryIds) {
        return countryService.getEachPassingRate(Arrays.asList(countryIds));
    }

    /**
     * 泰安市 整体 7*24h内 污水处理平均达标率，总处理水量，平均加药量
     * @param countryIds 泰安市下的 所有区
     * @return 整体 24h内 污水处理平均达标率，总处理水量，总加药量
     */
    @PostMapping("/overviewWeek")
    public Result overview(@RequestBody String[] countryIds) {
        return countryService.getOverview(Arrays.asList(countryIds), true);
    }

    /**
     * 泰安市 整体 24h内 污水处理平均达标率，总处理水量，平均加药量
     * @param countryIds 泰安市下的 所有区
     * @return 整体 24h内 污水处理平均达标率，总处理水量，总加药量
     */
    @PostMapping("/overview")
    public Result overviewToday(@RequestBody String[] countryIds) {
        return countryService.getOverview(Arrays.asList(countryIds), false);
    }


    /**
     * 泰安市 各区 污水 污染物含量 分析
     * @param countryIds 泰安市下的 所有区
     * @return 各区 24h平均 污染物含量
     */
    @PostMapping("/eachContent")
    public Result eachContent(@RequestBody String[] countryIds) {
        return countryService.getEachContent(Arrays.asList(countryIds));
    }
}